# Copyright (c) 2008, Luke Freeman
# All rights reserved.

# Redistribution and use in source and binary forms, with or without modification, 
# are permitted provided that the following conditions are met:
#
#    * Redistributions of source code must retain the above copyright notice, this 
#      list of conditions and the following disclaimer.
#    * Redistributions in binary form must reproduce the above copyright notice, this 
#      list of conditions and the following disclaimer in the documentation and/or 
#      other materials provided with the distribution.
#    * Neither the name of Flag-Up nor the names of its contributors may 
#      be used to endorse or promote products derived from this software without specific 
#      prior written permission.
#
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS 
# OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF 
# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 
# COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, 
# EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE 
# GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND 
# ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE 
# OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 
# POSSIBILITY OF SUCH DAMAGE.

import urllib2
from xml.dom import minidom

from config.configuration import SnapIn

# RSS details
GMAIL_REALM = 'New mail feed'
GMAIL_URL = 'https://mail.google.com/mail/feed/atom'

class Agent(SnapIn):

    # agent information
    description = 'Gmail Flag-Up Mail Check Agent'
    author = 'Luke Freeman'
    type = 'gmail'
    type_description = 'Gmail Account'    

    def poll(self):
      auth_handler = urllib2.HTTPBasicAuthHandler()
      auth_handler.add_password(GMAIL_REALM, GMAIL_URL, "freeman.luke", "m0nkeytre3")

      url_opener = urllib2.build_opener(auth_handler)
      urllib2.install_opener(url_opener)

      dom = minidom.parseString(urllib2.urlopen(GMAIL_URL).read())
      elements = dom.getElementsByTagName("fullcount")

      unread_count = elements[0].firstChild.wholeText
      
      # define the return message
      messages = []
      
      return_message = {
        "unread_count" : unread_count,
        "messages" : messages
      }
      
      return return_message
